package tests

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.Suite
import traits.TDescuentoHablateTodo
import traits.TDescuentoPlanAmigos
import comunicaciones.LlamadaLocal
import planes.PrepagoLocal

@RunWith(classOf[JUnitRunner])
class TestLlamadaLocal extends Suite{

//------------------Test obtener el precio de una llamada local con descuento hablate todo----------------------------------
  def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodo(){
    var call = new LlamadaLocal(0,420) with TDescuentoHablateTodo{
          override def esDeFinDeSemana = true
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 0: "+total);
    println()
    assert( total.round == 3)
  } 
  
  def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodoPeronoEsFinDeSemana(){
    var call = new LlamadaLocal(0,360) with TDescuentoHablateTodo{
          override def esDeFinDeSemana = false
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 1: "+total);
    println()
    assert( total.round == 4)
  } 
  
//---------------Test obtener el precio de una llamada local con descuento nums amigos--------------------------------------
  
  def testObtenerPrecioDeLlamadaLocalConPlanNumerosAmigos(){
    var call = new LlamadaLocal(55555555,420) with TDescuentoPlanAmigos{
          override def numerosEnPlan = List(0606456,55555555)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 2: "+total);
    println()
    assert( total.round == 0)
  }
  
  def testObtenerPrecioDeLlamadaLocalConPlanNumerosAmigosElNumNoEstaEnPlan(){
    var call = new LlamadaLocal(55555555,420) with TDescuentoPlanAmigos{
          override def numerosEnPlan = List(0606456,55556555)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 3: "+total);
    println()
    assert( total.round == 4)
  }
  
//--------Test llamada local con numeros amigos y hablate todo-----------------------------------------------------------
 def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodoYNumsAmigos(){
    var call = new LlamadaLocal(3333333,420) with TDescuentoHablateTodo with TDescuentoPlanAmigos{
          override def esDeFinDeSemana = true
          override def numerosEnPlan = List(3333333)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 4: "+total);
    println()
    assert( total.round == 0)
  } 
 
 def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodoYNumsAmigosElNumNoEstaEnPlan(){
    var call = new LlamadaLocal(3333333,420) with TDescuentoHablateTodo with TDescuentoPlanAmigos{
          override def esDeFinDeSemana = true
          override def numerosEnPlan = List(3333533)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 5: "+total);
    println()
    assert( total.round == 3)
  } 
 
 def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodoYNumsAmigosYNoEsFinDeSemana(){
    var call = new LlamadaLocal(3333333,420) with TDescuentoHablateTodo with TDescuentoPlanAmigos{
          override def esDeFinDeSemana = false
          override def numerosEnPlan = List(3333333)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 6: "+total);
    println()
    assert( total.round == 0)
  } 
  
 
 def testObtenerElPrecioDeUnaLlamadaLocalConPlanHablateTodoYNumsAmigosNoEstaEnPlanYNoEsFinDeSemana(){
    var call = new LlamadaLocal(3333333,180) with TDescuentoHablateTodo with TDescuentoPlanAmigos{
          override def esDeFinDeSemana = false
          override def numerosEnPlan = List(3433333)
      }
    var total = call.calcularPrecio
    println("Llamada con descuento duro: "+ call.duracion+" segs");
    println("Total 7: "+total);
    println()
    assert( total.round == 2)
  } 
 

  
}